#!/system/bin/sh

# 全局变量：存储应用数据（无declare，直接使用）
# APPS：所有包名列表（空格分隔）
# APP_DATA_<包名>：对应应用数据（格式：应用名|广告文件夹1;广告文件夹2...）
APPS=""


# 加载数据文件到全局变量（无local/declare）
# 参数：$1 数据文件路径（默认 ./app_ad_data.txt）
load_ad_data() {
    # 变量加前缀 lad_（load_ad_data），避免污染
    lad_data_file="$1"
    # 设置默认路径
    if [ -z "$lad_data_file" ]; then
        lad_data_file="./app_ad_data.txt"
    fi

    # 若已加载，直接返回
    if [ -n "$APPS" ]; then
        return 0
    fi

    # 检查数据文件
    if [ ! -f "$lad_data_file" ]; then
        echo "错误：数据文件 $lad_data_file 不存在"
        return 1
    fi

    echo "加载数据文件：$lad_data_file..."
    lad_line_num=0
    lad_app_name=""
    lad_pkg=""
    lad_folders=""

    # 逐行解析（纯POSIX sh语法）
    while IFS= read -r lad_line; do
        lad_line_num=$((lad_line_num + 1))
        # 跳过空行和注释
        if [ -z "$lad_line" ] || echo "$lad_line" | grep -q '^#'; then
            continue
        fi

        # 分割字段（应用名|包名|文件夹列表）
        IFS='|' read -r lad_app_name lad_pkg lad_folders <<< "$lad_line"

        # 校验字段完整性
        if [ -z "$lad_app_name" ] || [ -z "$lad_pkg" ] || [ -z "$lad_folders" ]; then
            echo "警告：第 $lad_line_num 行格式错误，跳过"
            continue
        fi

        # 1. 存储包名到APPS（空格分隔）
        APPS="$APPS $lad_pkg"
        # 2. 存储应用数据到全局变量（APP_DATA_<包名>，替换包名中的.为_）
        lad_var_name="APP_DATA_$(echo "$lad_pkg" | sed 's/\./_/g')"
        eval "$lad_var_name=\"$lad_app_name|$lad_folders\""
    done < "$lad_data_file"

    # 去除APPS开头的空格
    APPS=$(echo "$APPS" | sed 's/^ //')
    echo "数据加载完成，共 $(echo "$APPS" | wc -w) 个应用"
    return 0
}


# 根据包名获取应用名（无local/declare）
get_app_name() {
    # 变量加前缀 gan_（get_app_name）
    gan_pkg="$1"
    if [ -z "$gan_pkg" ]; then
        echo "错误：请提供包名"
        return 1
    fi

    # 确保数据已加载
    load_ad_data || return 1

    # 拼接变量名（APP_DATA_<包名>）
    gan_var_name="APP_DATA_$(echo "$gan_pkg" | sed 's/\./_/g')"
    # 获取变量值（应用名|文件夹列表）
    eval "gan_data=\${$gan_var_name}"

    # 检查数据是否存在
    if [ -z "$gan_data" ]; then
        echo "错误：未找到包名 $gan_pkg 的数据"
        return 1
    fi

    # 提取第一个字段（应用名）
    echo "$gan_data" | cut -d'|' -f1
    return 0
}


# 根据包名获取广告文件夹列表（输出换行分隔的路径，无local/declare）
get_ad_folders() {
    # 变量加前缀 gaf_（get_ad_folders）
    gaf_pkg="$1"
    if [ -z "$gaf_pkg" ]; then
        echo "错误：请提供包名"
        return 1
    fi

    # 确保数据已加载
    load_ad_data || return 1

    # 拼接变量名
    gaf_var_name="APP_DATA_$(echo "$gaf_pkg" | sed 's/\./_/g')"
    # 获取变量值（应用名|文件夹列表）
    eval "gaf_data=\${$gaf_var_name}"

    # 检查数据是否存在
    if [ -z "$gaf_data" ]; then
        echo "错误：未找到包名 $gaf_pkg 的数据"
        return 1
    fi

    # 提取第二个字段（文件夹列表），按;分割为换行，去除双引号
    echo "$gaf_data" | cut -d'|' -f2 | tr ';' '\n' | sed 's/^"//;s/"$//'
    return 0
}
